/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author FCCCRTI05
 */
public class Conexion
{
    Connection conex_mysql = null;
    Connection conex_sql = null;
    String estado_mysql = "desconectado";
    String estado_sql = "desconectado";
    String usuario = null;

    public void ConectarMySQL()
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conex_mysql = DriverManager.getConnection("jdbc:mysql://localhost:3306/fcc","fcc_jde","47EB19");
            if (conex_mysql != null)
                estado_mysql = "conectado";
        }
        catch (Exception x)
        {
            estado_mysql = x.getMessage();
        }
    }

    public void DesconectarMySQL()
    {
        try
        {
            conex_mysql.close();
            estado_mysql = "desconectado";
        }
        catch (Exception x)
        {
            estado_mysql = x.getMessage();
        }
    }

    public void FijarUsuario(String usuariop)
    {
        usuario = usuariop;
    }

    public void FijarEstadoMySQL(String estadop)
    {
        estado_mysql = estadop;
    }

    public String ObtenerUsuario()
    {
        return usuario;
    }

    public String ObtenerUsuarioFull()
    {
        //OBJETO DE UTILIDADES
        db.Utilidades utilidades = new db.Utilidades();
        String usuario_full = "Ninguno";
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select pais_usu,nombres_usu,usuario_usu from F55_PAGOS_USUARIOS"+
            " where usuario_usu like "+"'"+usuario+"'");
            while (rs.next())
                usuario_full = "Pa&iacute;s: <b>"+rs.getString("pais_usu")+"</b>, Usuario: <b>"+rs.getString("nombres_usu")+"</b>";
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            usuario_full = x.getMessage();
        }
        return usuario_full;
    }

    public String ObtenerNombresUsuario()
    {
        String nombres_usuario = "Ninguno";
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select usuario_usu,nombres_usu from F55_PAGOS_USUARIOS"+
            " where usuario_usu like "+"'"+usuario+"'");
            while (rs.next())
                nombres_usuario = rs.getString("nombres_usu");
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            nombres_usuario = x.getMessage();
        }
        return nombres_usuario;
    }

    public String ObtenerMailUsuario()
    {
        String mail_usuario = "Ninguno";
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select usuario_usu,mail_usu from F55_PAGOS_USUARIOS"+
            " where usuario_usu like "+"'"+usuario+"'");
            while (rs.next())
                mail_usuario = rs.getString("mail_usu");
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            mail_usuario = x.getMessage();
        }
        return mail_usuario;
    }

    public String ObtenerPaisUsuario()
    {
        String pais = "Ninguno";
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select usuario_usu,pais_usu from F55_PAGOS_USUARIOS"+
            " where usuario_usu like "+"'"+usuario+"'");
            while (rs.next())
                pais = rs.getString("pais_usu");
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            pais = x.getMessage();
        }
        return pais;
    }

    public String ObtenerCompaniaUsuario()
    {
        String compania = "Ninguno";
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select pagos_companias_usu,pagos_companias_acceso from F55_PAGOS_COMPANIAS_USUARIO"+
            " where pagos_companias_usu like "+"'"+usuario+"'");
            while (rs.next())
                compania = rs.getString("pagos_companias_acceso");
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            compania = x.getMessage();
        }
        return compania;
    }

    public String ObtenerCompaniasUsuario()
    {
        String companias = "";
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select pagos_companias_usu,pagos_companias_acceso from F55_PAGOS_COMPANIAS_USUARIO"+
            " where pagos_companias_usu like "+"'"+usuario+"'");
            while (rs.next())
                companias += "'"+rs.getString("pagos_companias_acceso")+"',";
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            companias = x.getMessage();
        }
        return companias;
    }

    public String ObtenerCodigoCompania(String compania)
    {
        String codigo = null;
        try
        {
            ConectarMySQL();
            Statement s = conex_mysql.createStatement();
            ResultSet rs = s.executeQuery("select id_cia,descrip_cia from companias"+
            " where descrip_cia like "+"'"+compania+"'");
            while (rs.next())
                codigo = rs.getString("id_cia");
            rs.close();
            s.close();
            DesconectarMySQL();
        }
        catch (Exception x)
        {
            codigo = x.getMessage();
        }
        return codigo;
    }

    public boolean AccesoTodasCompanias()
    {
        boolean flag = true;
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select usuario_usu,acceso_todas_cias_usu from F55_PAGOS_USUARIOS"+
            " where usuario_usu like "+"'"+usuario+"'"+" and acceso_todas_cias_usu like 'SI'");
            if ((rs != null)&&(rs.next()))
                flag = true;
            else
                flag = false;
            rs.close();
            s.close();
        }
        catch (Exception x)
        {
            flag = false;
        }
        return flag;
    }

    public boolean CompaniasMultiplesUsuario()
    {
        boolean flag = true;
        int contador = 0;
        try
        {
            Statement s = conex_sql.createStatement();
            ResultSet rs = s.executeQuery("select * from F55_PAGOS_COMPANIAS_USUARIO"+
            " where pagos_companias_usu like "+"'"+usuario+"'");
            while (rs.next())
                contador++;
            rs.close();
            s.close();
            if (contador == 1)
                flag = false;
            if (contador > 1)
                flag = true;
        }
        catch (Exception x)
        {
            flag = false;
        }
        return flag;
    }

    public String ObtenerEstadoMySQL()
    {
        return estado_mysql;
    }

    public Connection ObtenerConexionMySQL()
    {
        return conex_mysql;
    }

    public void GuardarEnBitacora(String accion)
    {
        try
        {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            PreparedStatement pst = conex_sql.prepareStatement("insert into F55_PAGOS_BITACORA values"+
            "("+"'"+usuario+"'"+","+"'"+accion+"'"+","+"'"+sdf.format(new Date())+"'"+")");
            pst.executeUpdate();
            pst.close();
        }
        catch (Exception x)
        {

        }
    }

    public void ConectarSQLServer()
    {
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
            conex_sql = DriverManager.getConnection("jdbc:jtds:sqlserver://10.15.1.151:1433/JDE_DEVELOPMENT","jde","54XB15");
            if (conex_sql != null)
                estado_sql = "conectado";
        }
        catch (Exception x)
        {
            estado_sql = x.getMessage();
        }
    }

    public void DesconectarSQLServer()
    {
        try
        {
            conex_sql.close();
            estado_sql = "desconectado";
        }
        catch(Exception x)
        {

        }
    }

    public Connection ObtenerConexionSQLServer()
    {
        return conex_sql;
    }

    public String ObtenerEstadoSQLServer()
    {
        return estado_sql;
    }
}